/**
 * @name 通过字符串的hash得到对应的颜色
 * @param { string } str
 * @param { string[] } colors: 颜色模版
 * @returns { Array<string> }
 */
export function getStringColor(str, colors = []) {
  if (!str) return colors[0];
  if (!colors || colors.length === 0) return;
  return colors[getBKDRHASH(str) % colors.length];
}

/**
 * @name 字符串hash
 * @param { string } str
 * @returns { number }
 * @description BKDRHASH是一种字符哈希算法，自行查阅资料
 */
export function getBKDRHASH(str) {
  const seed = 131;
  let hash = 0;
  let charCode = 0;
  let index = 0;
  while ((charCode = str.charCodeAt(index))) {
    hash = (hash * seed + charCode) % Number.MAX_SAFE_INTEGER; // 求余来防止溢出
    index++;
  }
  return hash;
}
